package edu.upn.sigemfi.seg.beans;

import edu.upn.sigemfi.seg.bc.CargoDelegate;
import edu.upn.sigemfi.seg.be.Cargo;
import java.util.List;
import javax.faces.model.SelectItem;

public class CargoController extends AbstractController {

    private CargoDelegate delegado;
    private Cargo cargo;

    public CargoController() {
        delegado = new CargoDelegate();
    }

    public List<Cargo> getCargos() {
        try {
            return delegado.listar();
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public String nuevo() {
        cargo = new Cargo();
        return "nuevo";
    }

    public String registrar() {
        try {
            delegado.crear(cargo);
            info("El cargo se registró correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public String actualizar() {
        try {
            delegado.editar(cargo);
            info("El cargo se actualizó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public String eliminar() {
        try {
            delegado.eliminar(cargo);
            info("El cargo se eliminó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public Cargo buscar(Long codigo) {
        try {
            return delegado.buscar(codigo);
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public SelectItem[] getCargosSI() {
        SelectItem[] select = null;
        try {
            List<Cargo> lista = delegado.listar();
            if (lista != null) {
                select = new SelectItem[lista.size() + 1];
                int i = 0;
                select[i++] = new SelectItem(null, "<<Seleccione un cargo>>");
                for (Cargo c : lista) {
                    select[i++] = new SelectItem(c, c.getNombre());
                }
            } else {
                select = new SelectItem[1];
                select[0] = new SelectItem(null, "<<No existen cargos>>");
            }
        } catch (Exception e) {
            select = new SelectItem[1];
            select[0] = new SelectItem(null, "<<Error al momento de obtener los datos>>");
            error(e.getMessage());
        }
        return select;
    }

    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }
}
